package com.eastfair.venueservice.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.eastfair.boot.request.PageParams;
import com.eastfair.boot.service.SuperService;
import com.eastfair.venueservice.dto.ServiceProviderAuditHistoryDTO;
import com.eastfair.venueservice.entity.ServiceProviderAuditHistory;
import com.eastfair.venueservice.vo.ServiceProviderAuditHistoryVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 服务商审核历史表
 * </p>
 *
 * @author gj
 * @date 2022 -07-13
 */
public interface ServiceProviderAuditHistoryService extends SuperService<ServiceProviderAuditHistory> {

    /**
     * 查询审核历史VO列表.
     *
     * @param pageParams the page params
     * @return the page
     */
    IPage<ServiceProviderAuditHistoryVO> listServiceProviderAuditHistoryVOs(PageParams<ServiceProviderAuditHistoryDTO> pageParams);

    /**
     * 查询审核历史列表.
     *
     * @param pageParams the page params
     * @return the page
     */
    IPage<ServiceProviderAuditHistory> listServiceProviderAuditHistories(PageParams<ServiceProviderAuditHistoryDTO> pageParams);

    /**
     * 查询服务商审核历史列表.
     *
     * @param param the param
     * @return the list
     */
    List<ServiceProviderAuditHistory> listServiceProviderAuditHistories(ServiceProviderAuditHistoryDTO param);

    /**
     * 服务商ID查询服务商列表.
     *
     * @param serviceProviderId the service provider id
     * @return the list
     */
    List<ServiceProviderAuditHistory> listByServiceProviderId(Long serviceProviderId);

    /**
     * id 查询审核历史详情.
     *
     * @param id the id
     * @return the service provider audit history vo by id
     */
    ServiceProviderAuditHistoryVO getVOById(Long id);

    /**
     * 保存服务商审核历史.
     *
     * @param historyDTO the history dto
     * @return the boolean
     */
    boolean saveServiceProviderAuditHistory(ServiceProviderAuditHistoryDTO historyDTO);

    /**
     * 批量复制审核历史.
     *
     * @param sourceServiceProviderId      the source service provider id
     * @param targetServiceProviderId      the target service provider id
     * @param targetServiceProviderAuditId the target service provider audit id
     * @return the boolean
     */
    boolean copyBatchNewAuditHistory(Long sourceServiceProviderId, Long targetServiceProviderId, Long targetServiceProviderAuditId);

    /**
     * 异步复制审核历史.
     *
     * @param sourceServiceProviderId      the source service provider id
     * @param targetServiceProviderId      the target service provider id
     * @param targetServiceProviderAuditId the target service provider audit id
     * @return the boolean
     */
    boolean asyncCopyBatchNewAuditHistory(Long sourceServiceProviderId, Long targetServiceProviderId, Long targetServiceProviderAuditId);
}
